import { request } from "@umijs/max";

/**
 * 异步添加部门信息
 * @param data - 要添加的部门信息，类型为 API.Department
 * @returns 返回一个 Promise，该 Promise 解析为 API.Result<any> 类型的响应数据
 */
export async function addDepartment(data: API.Department) {
    // 发送 POST 请求到 /api/department/add 接口，携带部门信息
    return request<API.Result<any>>('/api/department', {
        method: 'POST',
        data
    });
}

/**
 * 异步更新部门信息
 * @param data - 要更新的部门信息，类型为 API.Department
 * @returns 返回一个 Promise，该 Promise 解析为 API.Result<any> 类型的响应数据
 */
export async function updateDepartment(data: API.Department) {
    // 发送 PUT 请求到 /api/department 接口，携带要更新的部门信息
    return request<API.Result<any>>(`/api/department`, {
        method: 'PUT',
        data
    });
}

/**
 * 异步删除指定 ID 的部门信息
 * @param id - 要删除的部门的 ID，类型为数字
 * @returns 返回一个 Promise，该 Promise 解析为 API.Result<any> 类型的响应数据
 */
// 注意：此处 'expept' 可能是拼写错误，推测应为 'export'
export async function deleteDepartment(id: number) {
    // 发送 DELETE 请求到 /api/department/{id} 接口，携带要删除的部门 ID
    return request<API.Result<any>>(`/api/department/${id}`, {
        method: 'DELETE'
    });
}

/**
 * 异步获取部门树形结构数据
 * @returns 返回一个 Promise，该 Promise 解析为 API.Result<API.Department[]> 类型的响应数据，包含部门树形结构信息
 */
export async function departmentTree() {
    // 发送 GET 请求到 /api/department/tree 接口，获取部门树形结构
    return request<API.Result<API.Department[]>>(`/api/department/tree`, {
        method: 'GET'
    });
}

/**
 * 异步根据部门 ID 获取单个部门的详细信息
 * @param id - 要获取信息的部门的 ID，类型为数字
 * @returns 返回一个 Promise，该 Promise 解析为 API.Result<API.Department> 类型的响应数据，包含部门的详细信息
 */
export async function getDepartment(id: number) {
    // 发送 GET 请求到 /api/department/{id} 接口，携带要查询的部门 ID
    return request<API.Result<API.Department>>(`/api/department/${id}`, {
        method: 'GET'
    });
}


/**
 * 异步获取部门列表信息
 * @param params - 分页参数，类型为 API.PageParams
 * @returns 返回一个 Promise，该 Promise 解析为 API.Page<API.Department> 类型的响应数据，包含部门列表及分页信息
 */
export async function departmentList(params: API.PageParams) {
    // 发送 GET 请求到 /api/department 接口，携带分页参数
    return request<API.Page<API.Department>>(`/api/department`, {
        method: 'GET',
        params
    });
}

